package Offertuji;

public class Offer2006 {
    //szh 2022/3/18/20:55
    //剑指 Offer II 006. 排序数组中两个数字之和
    /*函数应该以长度为2的整数数组的形式返回这两个数的下标值。 numbers的下标 从 0 开始计数 ，
    所以答案数组应当满足0 <= answer[0] < answer[1]< numbers.length
    假设数组中存在且只存在一对符合条件的数字，同时一个数字不能使用两次。

    示例 1：
    输入：numbers = [1,2,4,6,10], target = 8
    输出：[1,3]
    解释：2 与 6 之和等于目标数 8 。因此 index1 = 1, index2 = 3 。

    示例 2：
    输入：numbers = [2,3,4], target = 6
    输出：[0,2]

    示例 3：
    输入：numbers = [-1,0], target = -1
    输出：[0,1]
    来源：力扣（LeetCode）
    链接：https://leetcode-cn.com/problems/kLl5u1
    著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

     */
//
    public int[] twoSum(int[] numbers, int target) {

        int length = numbers.length;
        int l = 0;
        int r = length-1;
   while(l<r)
   {
       int sum = numbers[l]+numbers[r];
       if(sum==target)
       {
           return new int[] {l,r};
       }
       if(sum>target)
       {
           r--;
       }
       if(sum<target)
       {
           l++;
       }
   }
        return null;
    }
}
